/*
******************************************************************************************************* 
**  Copyright (C) 2019, 苏州检易生物科技有限公司 
**  All rights reserved. 
** 
**  FileName:       	uart.h
**  Description:	
**  Author:        	 
**  Version				v0.1
**  Date:           	2019-05-22
**	Function List： 
**  History:         
*********************************************************************************************************
*/
/*
*********************************************************************************************************
*                                              	防止重复包含
*********************************************************************************************************
*/

#ifndef _BSP_UART_H_
#define _BSP_UART_H_
/*
*********************************************************************************************************
*                                              	调试开关
*********************************************************************************************************
*/



/*
*********************************************************************************************************
*                                              	头文件
*********************************************************************************************************
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "stm32f4xx.h"
/*
*********************************************************************************************************
*                                              	宏定义
*********************************************************************************************************
*/
#define UART_TX_BUFF_SIZE  128
#define UART_RX_BUFF_SIZE  128
/*
*********************************************************************************************************
*                                              枚举和结构体类型定义
*********************************************************************************************************
*/
typedef void (*uart_callback)(void* arg,uint8_t *,uint16_t);
typedef struct BSP_UART{
	uint32_t	baudrate;
	uint8_t txbuff[UART_TX_BUFF_SIZE];
	uint8_t rxbuff[UART_TX_BUFF_SIZE];
	
	void (*uart_idle_callback)(void* arg ,uint8_t *rxbuff,uint16_t rxsize);
	void (*uart_tc_callback)(void* arg,uint8_t *txbuff,uint16_t txsize);
	
	void* arg;
}bsp_uart_t;
/*
*********************************************************************************************************
*                                              	全局变量声明
*********************************************************************************************************
*/

/*
*********************************************************************************************************
*                                              	函数声明
*********************************************************************************************************
*/
bsp_uart_t* bsp_uart_init(USART_TypeDef* uart,uint32_t baudrate,uart_callback pfn_tx_cb,uart_callback pfn_rx_cb);
void bsp_uart_transfer(bsp_uart_t*,uint8_t* txbuff,uint16_t txsize);
//void bsp_uart_reveive(bsp_uart_t*,uint32_t size,uint32_t timeout);
//void bsp_uart_reveive_byte(bsp_uart_t*,uint8_t* byte,uint32_t timeout);
void bsp_uart_send_byte(bsp_uart_t*,uint8_t byte);
void uart_write(bsp_uart_t handle, uint8_t* buf, uint16_t size);
#endif
